<?php

namespace app\rest\controller;

use think\Controller;
use think\Db;
use think\Request;
use app\rest\model\User as UserModel;

class User extends Controller
{
    /**
     * 显示资源列表
     *
     * @return \think\Response
     */
    public function index()
    {
//        return '列表页面';
        $list = Db::name('user')->field(['id','name'])->order('id','asc')->select();
//        var_dump($list);

//        // 赋值
//        $this->assign('title', '用户列表');
//        $this->assign('list', $list);
//        // 加载模版
//        return $this->fetch();

        return view('user/index',[
            'title' => '用户列表',
            'list' =>  $list
        ]);
    }

    /**
     * 显示创建资源表单页.
     *
     * @return \think\Response
     */
    public function create()
    {
//        return '添加用户';
        return view('user/create', [
            'title' => '天个用户啦'
        ]);
    }

    /**
     * 保存新建的资源
     *
     * @param  \think\Request $request
     * @return \think\Response
     */
    public function save(Request $request)
    {
        // DB + 手动处理
       /* // 请求对象
//        var_dump($request->post);

        // 获取 POST
        $p = $request->post();
//        $p = Request::instance()->post();
//        $p = input('post.');

//        dump($p);
//
        // 手动处理数据
        $data = [
            'name' => $p['name'],
            'pass' => md5($p['pass']),
            'sex' => $p['sex'],
            'age' => $p['age'],
            'province' => $p['province'],
            'tel' => $p['tel']
        ];
//        var_dump($data);

        // 新增
        $result = Db::name('user')->data($data)->insert();
        if ($result > 0) {
            return $this->success('添加成功!', url('rest/user/index'));
        } else {
            return $this->error('添加失败,请重试!');
        }*/

        // 模型处理
        $user = new UserModel($request->post());
//        $user = model('User');

        // 处理密码字段加密
//        $user->pass = md5(input('post.pass'));
        $user->pass = $user->setPass(input('post.pass'));

//        halt($user->pass); // 断点调试
//        dump($user);
//        dump($user);

        // 验证器验证数据
        $check = $this->validate($request->post(), 'rest/User');
        if (true !== $check) {
            $this->error($check);
            return;
        }

        // 添加数据 并排除非法字段
        // 返回受影响行数
        $result = $user->allowField(true)->save();

        echo $user->id;

        if ($result > 0) {
            return $this->success('添加成功!', url('rest/user/index'));
        } else {
            return $this->error('添加失败,请重试!');
        }
    }


    public function login()
    {
        return view('login', [
            'title'=>'登录测试'
        ]);
    }

    public function logindo()
    {
        $name = input('post.name');
        $pass = input('post.pass');

        $user = UserModel::get(['name'=>$name]);

//        halt($user);

        // 判断该用户是否存在
        if ($user) {
            // 根据用户名获取用户数据
            $id = $user->id;
            if ($user->checkPass($id, $pass)) {
                return '登录成功';
            } else {
                return '登录失败... 密码错误';
            }
        } else {
            return '登录失败,用户不存在';
        }

    }

    /**
     * 显示指定的资源
     *
     * @param  int $id
     * @return \think\Response
     */
    public function read($id)
    {
        // 请求筛选
        // 是否为 Ajax 请求
        if (!Request::instance()->isAjax()) {
//            $this->redirect('index/index/index');
            $this->error('你四不四迷路了!!','/');
            return;
        }
//        return '读取用户: ' . $id . '的资料';
        // 显式查询
        $row = Db::name('user')->field(['pass','status'],true)->find($id);
//        $row = Db::name('user')->field('*')->find($id);
//        var_dump($row);
        if ($row === null) {
            $info['status'] = false;
            $info['title'] = '查无此人';
            $info['datas'] = '查无数据,请重试!!';
        } else {
            $info['status'] = true;
            $info['title'] = $row['name'];
            $info['datas'] = $row;
        }
        return json($info);
    }



    /**
     * 显示指定的资源(页)
     *
     * @param  int $id
     * @return \think\Response
     */
    public function readpage($id)
    {
        // 显式查询s
        $row = Db::name('user')->field(['pass','status'],true)->find($id);
        // 验证数据...
        return view('user/show',[
            'title' => $row['name'].'的信息',
            'row' =>  $row
        ]);
    }

    /**
     * 显示编辑资源表单页.
     *
     * @param  int $id
     * @return \think\Response
     */
    public function edit($id)
    {
//        return '编辑用户: ' . $id . '的资料';
        // 显式查询
        $row = Db::name('user')->field(['pass','status'],true)->find($id);
        // 验证数据...
        return view('user/edit',[
            'title' => ' 编辑'.$row['name'].'的信息',
            'data' =>  $row
        ]);
    }

    /**
     * 保存更新的资源
     *
     * @param  \think\Request $request
     * @param  int $id
     * @return \think\Response
     */
    public function update(Request $request, $id)
    {
//        var_dump($request);

        /*// DB
        $info = $request->put();
//        var_dump($info);

        // 手动处理数据
        $data = [
            'name' => $info['name'],
            'sex' => $info['sex'],
            'age' => $info['age'],
            'province' => $info['province'],
            'tel' => $info['tel']
        ];

        $result = Db::name('user')->where('id', $id)->update($data);
        if ($result > 0) {
            return $this->success('编辑成功!', url('rest/user/index'));
        } else {
            return $this->error('编辑失败,请重试!');
        }*/

        // 模型
        $info = $request->put();
        $user = UserModel::get($id);

        // 验证器验证数据
        $check = $this->validate($info, 'rest/User');
        if (true !== $check) {
            $this->error($check);
            return;
        }
        $user->allowField(true)->save($info);
        $this->success('更新成功',  url('rest/user/index'));
    }

    /**
     * 删除指定资源
     *
     * @param  int $id
     * @return \think\Response
     */
    public function delete($id)
    {
        $result = Db::name('user')->delete($id);
        if ($result > 0) {
            $info['status'] = true;
            $info['id'] = $id;
            $info['info'] = 'ID为: ' . $id. ' 的用户删除成功!';
        } else {
            $info['status'] = false;
            $info['id'] = $id;
            $info['info'] = 'ID为: ' . $id. ' 的用户删除失败,请重试!';
        }
        return json($info);
    }
}
